﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BreukADO
{
    public partial class ToonResultatenOpdracht : Form
    {
        BreukADOLinqDataContext breukADOLinqDataContext = new BreukADOLinqDataContext();

        public ToonResultatenOpdracht()
        {
            InitializeComponent();
            //dgvOpdrachten.Columns.Add("Id","Id");
            //dgvOpdrachten.Columns.Add("Datum", "Datum");
            //dgvOpdrachten.Columns.Add("Moeilijkheidsgraad", "Moeilijkheidsgraad");
            //dgvOpdrachten.Columns.Add("Maximumscore", "Maximumscore");
            //dgvLeerlingen.Columns.Add("Id", "Id");
            //dgvLeerlingen.Columns.Add("Klas", "Klas");
            //dgvLeerlingen.Columns.Add("Totaalscore", "Totaalscore");
            //dgvOpdrachtDetail.Columns.Add("Opgave", "Opgave");
            //dgvOpdrachtDetail.Columns.Add("Oplossing", "Oplossing");
            //dgvOpdrachtDetail.Columns.Add("Antwoord", "Antwoord");
            //dgvOpdrachtDetail.Columns.Add("Fout", "Fout");
        }

        public void ToonResultatenOpdracht_Load(object sender, EventArgs e)
        {
            var queryResultsOpdrachten = from o in breukADOLinqDataContext.Opdrachts.AsEnumerable()
                                         select new {
                                             Id = o.opdrachtID,
                                             Datum = o.opdrachtDatum,
                                             Moeilijkheidsgraad = o.moeilijkheidsGraad,
                                             Maximumscore = o.maxScore
                                         };
            BindingSource bs = new BindingSource();
            bs.DataSource = queryResultsOpdrachten;
            this.dgvOpdrachten.DataSource = null;
            this.dgvOpdrachten.DataSource = bs;
        }

        private void dgvOpdrachten_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvOpdrachten.SelectedRows.Count > 0)
            {
                int id = Int32.Parse(dgvOpdrachten.Rows[e.RowIndex].Cells[0].Value.ToString());
                var queryResultsLeerlingen = (from l in breukADOLinqDataContext.Leerlings
                                             join lod in breukADOLinqDataContext.LeerlingOpdrachtDetails
                                             on l.leerlingID equals lod.leerlingID
                                             join od in breukADOLinqDataContext.OpdrachtDetails
                                             on lod.opdrachtDetailID equals od.opdrachtDetailID
                                             where od.opdrachtID == id
                                             select new {
                                                 Id = l.leerlingID,
                                                 Naam = l.naam,
                                                 Klas = l.klas,
                                                 Totaalscore = (
                                                    (
                                                        from lod2 in breukADOLinqDataContext.LeerlingOpdrachtDetails
                                                        join od2 in breukADOLinqDataContext.OpdrachtDetails
                                                        on lod2.opdrachtDetailID equals od2.opdrachtDetailID
                                                        where lod2.leerlingID == l.leerlingID
                                                        where od2.opdrachtID == id
                                                        where lod2.fout == 0
                                                        select lod2
                                                    ).Distinct()
                                                 ).Count()
                                             }).Distinct();
                BindingSource bs2 = new BindingSource();
                bs2.DataSource = queryResultsLeerlingen;
                this.dgvLeerlingen.DataSource = null;
                this.dgvLeerlingen.DataSource = bs2;
            }
        }

        private void dgvLeerlingen_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvLeerlingen.SelectedRows.Count > 0)
            {
                int id = Int32.Parse(dgvLeerlingen.Rows[e.RowIndex].Cells[0].Value.ToString());
                var queryResultsOpdrachtDetails = from od in breukADOLinqDataContext.OpdrachtDetails
                                                  join lod in breukADOLinqDataContext.LeerlingOpdrachtDetails
                                                  on od.opdrachtDetailID equals lod.opdrachtDetailID
                                                  where lod.leerlingID == id
                                                  select new {
                                                      Opgave = od.opgaveTekst,
                                                      Oplossing = od.oplossingTekst,
                                                      Antwoord = lod.antwoordTekst,
                                                      Fout = isFout(lod.fout.ToString())
                                                  };
                BindingSource bs3 = new BindingSource();
                bs3.DataSource = queryResultsOpdrachtDetails;
                this.dgvOpdrachtDetail.DataSource = null;
                this.dgvOpdrachtDetail.DataSource = bs3;
            }
        }

        private string isFout(string b)
        {
            if (b == "1")
            {
                return "FOUT";
            }
            else
            {
                return "CORRECT";
            }
        }
    }
}
